package com.wing.product.model.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.enums.IEnum;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.wing.mybatis.common.BaseEntity;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 产品
 *
 * @author
 */
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("pro_product")
public class Product extends BaseEntity<Product> implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 货品名称
     */
    private String name;

    /**
     * 货品编码
     */
    private String productCode;

    /**
     * 历史品名
     */
    private String historyName;

    /**
     * 历史货号
     */
    private String historyProductCode;

    /**
     * 规格码
     */
    private String specCode;

    /**
     * 物料类别性质
     */
    private String materialNature;

    /**
     * 物料类别性质
     */
    @TableField(exist = false)
    private String materialNatureName;

    /**
     * 所属类别
     */
    private Long productTypeId;

    /**
     * 所属类别编码
     */
    @TableField(exist = false)
    private String productTypeCode;

    /**
     * 所属类别名称
     */
    @TableField(exist = false)
    private String productTypeName;

    /**
     * 物料分类
     */
    private Long productCategoryId;

    /**
     * 物料分类名称
     */
    @TableField(exist = false)
    private String productCategoryName;

    /**
     * 库存计量方式
     */
    private String calculateWay;

    /**
     * 库存计量方式名称
     */
    @TableField(exist = false)
    private String calculateWayName;

    /**
     * 基础单位
     */
    private String baseUnit;

    /**
     * 基础单位名称
     */
    @TableField(exist = false)
    private String baseUnitName;

    /**
     * 是否自产产品
     */
    private String selfProductStatus;

    /**
     * 是否委外
     */
    private String outsourceStatus;

    /**
     * 生产工艺线路ID
     */
    private Long productProcessLineId;

    /**
     * 生产工艺线路编码
     */
    @TableField(exist = false)
    private String productProcessLineCode;

    /**
     * 生产工艺线路名称
     */
    @TableField(exist = false)
    private String productProcessLineName;


    /**
     * SKU工序编码集
     */
    private String skuProcessCode;

    /**
     * 是否可以销售
     */
    private String sellStatus;

    /**
     * 安全库存数量
     */
    public Integer warningQuantity;

    /**
     * 呆滞时长阈值
     */
    private Integer lethargyThreshold;

    /**
     * 质保期(天)
     */
    private Integer warrantyDay;

    /**
     * 折旧时长(月)
     */
    private Integer depreciationTime;


    /**
     * 是否一物一码
     */
    private String thingCodeStatus;

    /**
     * 是否批次管理
     */
    private String batchStatus;

    /**
     * 是否先进先出
     */
    private String inoutStatus;

    /**
     * 数据来源
     */
    private String dataSource;

    /**
     * 排序
     */
    private Integer sortNumber;

    /*************************************查询条件**********************************************/

    /**
     * SKU列表
     */
    @TableField(exist = false)
    private List<ProductDetail> productDetailList;

}
